package com.event.system.service.impl;

import com.event.common.constant.UserConstants;
import com.event.common.core.text.Convert;
import com.event.common.exception.ServiceException;
import com.event.common.utils.StringUtils;
import com.event.system.domain.SysEventRoster;
import com.event.system.domain.SysEventSort;
import com.event.system.mapper.SysEventRosterMapper;
import com.event.system.mapper.SysEventSortMapper;
import com.event.system.service.ISysEventSortService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.List;

/**
 * @Author lw
 */
@Service
public class SysEventSortServiceImpl implements ISysEventSortService {

    @Autowired
    private SysEventSortMapper mapper;

    @Autowired
    private SysEventRosterMapper sysEventRosterMapper;

    /**
     * 根据条件分页查询展会分类信息
     *
     * @param sysEventSort
     * @return
     */
    @Override
    public List<SysEventSort> selectSortEventSortList(SysEventSort sysEventSort) {
        return mapper.selectSortEventSortList(sysEventSort);
    }

    /**
     * 这里是模糊查询，通过字符串模糊查询
     *
     * @param sortName
     * @return
     */
    @Override
    public List<SysEventSort> selectSortEventSortListByName(String sortName) {
        return mapper.selectSortEventSortListByName(sortName);
    }

    /**
     * 根据id查找分类信息
     *
     * @param sortId
     * @return
     */
    @Override
    public SysEventSort selectSortEventSortBySortId(Long sortId) {
        return mapper.selectSortEventSortBySortId(sortId);
    }

    /**
     * 查询所有分类信息
     *
     * @return
     */
    @Override
    public List<SysEventSort> selectEventSortAll() {
        return mapper.selectEventSortAll();
    }

    /**
     * 新增展会分类信息
     *
     * @param sysEventSort
     * @return
     */
    @Override
    public int add(SysEventSort sysEventSort) {
        return mapper.add(sysEventSort);
    }

    /**
     * 修改展会分类信息
     *
     * @param sysEventSort
     * @return
     */
    @Override
    public int update(SysEventSort sysEventSort) {
        return mapper.update(sysEventSort);
    }

    /**
     * 删除展会分类信息
     *
     * @return
     */
    @Override
    public int deleteSysEventSortBySortId(String sortIds) {
        List<Long> paramList = new ArrayList<>();
        Long[] ids = Convert.toLongArray(sortIds);
        for (Long id: ids) {
            List<SysEventRoster> sysEventRosters = sysEventRosterMapper.selectSysEventRosterBysortId(id);
            if (!sysEventRosters.isEmpty()){
                throw new ServiceException(String.format("分类编号：%1$s已分配,不能删除", id));
            }
        }

//        for (int i = 0; i < ids.length; i++) {
//            List<SysEventRoster> sysEventRosters = sysEventRosterMapper.selectSysEventRosterBysortId(ids[i]);
//            if (sysEventRosters != null || sysEventRosters.size() > 0){
//                paramList.add(ids[i]);
//            }else{
//                throw new ServiceException(String.format("分类编号：%1$s已分配,不能删除", ids[i]));
//            }
//        }
//        Long[] paramsArray = paramList.toArray(new Long[paramList.size()]);
//        for (int i = 0; i < paramList.size(); i++) {
//            paramsArray[i] = paramsArray[i];
//        }
        return mapper.deleteSysEventSortBySortId(ids);
    }

    /**
     * 校验分类名称是否唯一
     *
     * @param sysEventSort
     * @return
     */
    @Override
    public String checkSortNameUnique(SysEventSort sysEventSort) {
        Long sortId = StringUtils.isNull(sysEventSort.getSortId()) ? -1L : sysEventSort.getSortId();
        SysEventSort sysEventSort1 = mapper.checkSortNameUnique(sysEventSort.getSortName());
        if (StringUtils.isNotNull(sysEventSort1) && sysEventSort1.getSortId().longValue() != sortId.longValue())
        {
            return UserConstants.SORT_NAME_NOT_UNIQUE;
        }
        return UserConstants.SORT_NAME_UNIQUE;
    }
}
